//package com.study.sbsummary.config.kafka.consumer;
//
//import com.alibaba.fastjson.JSON;
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.kafka.clients.consumer.ConsumerRecord;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.PostConstruct;
//import java.util.*;
//
//@Service
//@Data
//@Slf4j
//public class ActionRecordsHandler implements IRecordsHandler {
//
//    @Autowired
//    private ActionBiz publishDocKafkaBiz;
//
//    @Value("${friend_host:http://local.int.yidian-inc.com}")
//    private String url;
//
//    @Autowired
//    private Map<String, IActionHandler> actionHandlers;
//
//    private Map<String, List<IActionHandler>> actionToHandlers = new HashMap<>();
//
//    @Override
//    public String name() {
//        return "action";
//    }
//
//    @PostConstruct
//    public void init() {
//        actionHandlers.values().forEach( handler -> {
//            handler.actions().forEach(action -> {
//                List<IActionHandler> handlers = actionToHandlers.get(action.getAction());
//                if (handlers == null) {
//                    handlers = new ArrayList<>();
//                    actionToHandlers.put(action.getAction(), handlers);
//                }
//                handlers.add(handler);
//            });
//        });
//
//        actionToHandlers.values().forEach(handlers -> {
//            Collections.sort(handlers, Comparator.comparingInt(IActionHandler::order));
//        });
//    }
//
//    @Override
//    public boolean handle(ConsumerRecord consumerRecord) {
//            log.info("topic: {}, partition: {}, offset: {}, value: {}", consumerRecord.topic(),
//                    consumerRecord.partition(), consumerRecord.offset(),
//                    consumerRecord.value().toString());
//            Map map = JSON.parseObject(consumerRecord.value().toString(), HashMap.class);
//            if (map == null) {
//                return true;
//            }
//            String opt = (String) map.get("opt");
//            if (StringUtils.isEmpty(opt)) {
//                log.warn("action is empty");
//                return true;
//            }
//            List<IActionHandler> handlers = actionToHandlers.get(opt);
//            if (handlers == null || handlers.isEmpty()) {
//                log.warn("no handlers for action: {}", opt);
//                return true;
//            }
//            for (IActionHandler handler : handlers) {
//                if (!handler.handle(map) && !handler.moveOn()) {
//                    return false;
//                }
//            }
//            return true;
//    }
//}
